/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI;

import java.awt.Cursor;

/**
 *
 * @author jean
 */
public class Principal extends javax.swing.JFrame {

    /**
     * Creates new form principal
     */
    public Principal() {
        initComponents();
        this.setTitle("Simulador de Supermercado");
        textApresentacao.setEnabled(false);
        textProposta.setEnabled(false);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        btFechar = new javax.swing.JButton();
        btAvancar = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        textApresentacao = new javax.swing.JTextArea();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        textProposta = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        btFechar.setText("Fechar");
        btFechar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btFecharActionPerformed(evt);
            }
        });

        btAvancar.setText("Avançar");
        btAvancar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAvancarActionPerformed(evt);
            }
        });

        textApresentacao.setColumns(20);
        textApresentacao.setRows(5);
        textApresentacao.setText("Este trabalho tem como objetivo o desenvolvimento de uma aplicação capaz de simular o funcionamento\ndos caixas de um supermercado, usando os conceitos de FILAS.\n\nA proposta detalhada do trabalho pode ser visualizada na aba \"Proposta do Trabalho\".\n\nNa aba atual, temos 2 opções:\n\n- Avançar: Parte para a tela de simulação;\n- Fechar:  Encerra a aplicação.\n\nAo clicar em \"Avançar\" você será direcionado para a tela de simulação. Nesta tela teremos uma caixa\nde texto, onde será mostrado o andamento da aplicação. Ela será atualizada a cada 1 segundo.\n\nAlém disso, teremos as seguintes opções:\n\n- Ver Resumo (disponível somente ao fim da simulação): Abre uma nova janela exibindo os resultados finais. \nNesta janela, haverá também um botão \"Gerar Txt\", que permitirá exportar um arquivo de texto com o resumo final. \n- Iniciar/Reiniciar Simulação: Inicia a simulação ou a reinicia caso tenha sido encerrada;\n- Pausar/Continuar: Pausa a aplicação a qualquer momento para conferência do andamento ou a reinicia\ncaso tenha sido pausada;\n- Encerrar: Possibilita o encerramento da aplicação a qualquer momento;\n- Cancelar: Volta para a tela atual.");
        textApresentacao.setDisabledTextColor(new java.awt.Color(1, 1, 1));
        jScrollPane1.setViewportView(textApresentacao);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 774, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 371, Short.MAX_VALUE)
        );

        jTabbedPane1.addTab("Apresentação", jPanel1);

        textProposta.setColumns(20);
        textProposta.setRows(5);
        textProposta.setText("Simular o movimento dos caixas de um supermercado durante 2 horas. A unidade de tempo da\nsimulação é o minuto. Há quatro caixas de atendimento, sendo um deles caixa-expressa que somente\natende clientes com, no máximo, 6 volumes. O funcionamento dos caixas é o seguinte:\n\nCAIXA 1: atende 1 cliente a cada 4 minutos;\nCAIXA 2: atende 1 cliente a cada 5 minutos;\nCAIXA 3: atende 1 cliente a cada 7 minutos;\nCAIXA 4(expressa): atende 1 cliente a cada 2 minutos;\n\nO número de volumes de cada cliente é aleatório, entre 1 e 50. A cada minuto chega um cliente que\nescolhe para ser atendido no caixa que tiver a menor fila. Caso haja mais de uma fila com o mesmo\ntamanho, o cliente escolherá a que oferecer o menor tempo de atendimento.\n\nConsiderar que ao início da simulação(tempo zero) há 4 clientes no Caixa 1, 3 clientes no Caixa 2,\n2 clientes no Caixa 3 e 4 clientes no Caixa 4.\n\nPERGUNTAS:\n\n1. Qual o tamanho mínimo e máximo de cada fila ?\n2. Qual o número de vezes que cada fila ficou vazia ?\n3. Qual o tempo mínimo, médio e máximo de permanência dos clientes servidos em cada fila ?\n4. Relacionar os clientes que ainda estiveram em cada fila ao final da simulação.\n\nNA TELA DEVERÁ APARECER:\n\n- O minuto da simulação;\n- Quantos volumes tem o cliente que está chegando e em qual fila ele vai entrar;\n- Quanto tempo o cliente que será atendido esperou na sua respectiva fila;\n- Dar uma opção de pausa a qualquer minuto da simulação para verificação das informações;\n- Dar uma opção de terminar a simulação a qualquer minuto, respondendo as perguntas acima.");
        textProposta.setDisabledTextColor(new java.awt.Color(1, 1, 1));
        jScrollPane2.setViewportView(textProposta);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 774, Short.MAX_VALUE)
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 371, Short.MAX_VALUE)
        );

        jTabbedPane1.addTab("Proposta do Trabalho", jPanel2);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(btAvancar)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btFechar)
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(0, 0, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addGap(321, 321, 321))
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTabbedPane1)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(20, 20, 20)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTabbedPane1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btFechar)
                    .addComponent(btAvancar))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btFecharActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btFecharActionPerformed
        
        System.exit(0);
        
    }//GEN-LAST:event_btFecharActionPerformed
    
    private void btAvancarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAvancarActionPerformed
        
        MouseLoading();
        Simulacao sim = new Simulacao();
        sim.setTitle("Simulação");
        sim.setLocationRelativeTo(null);
        sim.setVisible(true);
        MouseWork();
        
    }//GEN-LAST:event_btAvancarActionPerformed

    private void MouseLoading() {
        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    }

    private void MouseWork() {
        setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btAvancar;
    private javax.swing.JButton btFechar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextArea textApresentacao;
    private javax.swing.JTextArea textProposta;
    // End of variables declaration//GEN-END:variables
}